package com.dhecp.project.system.service;

import java.util.List;
import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.system.domain.SysUserInfo;
import com.dhecp.project.system.domain.SysUserInfoSimple;

/**
 * 用户 业务层
 * 
 * @author ruoyi
 */
public interface SysUserInfoService{
	
    /**
     * 验证用户名和密码
     * @param params
     * @return UserInfo
     * @author DH-Xxj
     */
    SysUserInfo queryByUseridAndPass(String userId, String passWord);
    
    /**
     * 拓展用户登录验证
     * @param params
     * @return String (返回异常提示信息，返回空代表无异常)
     * @author DH-Xxj
     */
	String queryUserLoginException(Map<String, Object> params);

    /**
     * 通过用户编号查询用户信息
     * @param userId
     * @return 实体-UserInfo
     * @author DH-Xxj
     */
    SysUserInfo queryByUserId(String userId);

    /**
     * 按条件查询用户列表
     * @param params
     * @param nowherestr 若存在（任意值），表示不进行条件过滤
     * @param nodatascode 若存在（任意值），表示不进行数据权限控制
     * @return List-UserInfo
     * @author DH-Xxj
     * @throws Exception
     */
    List<SysUserInfo> queryUserList(Map<String, Object> params) throws Exception;


    /**
     * 通过用户编号或用户名称查询用户信息
     * @param params
     * @param userIdOrUserName 必要参数：用户编号 或 用户名称
     * @return
     * @author DH-Xxj
     */
    List<SysUserInfo> queryUserListByUserIdOrUserName(Map<String, Object> params);


    /**
     * 新增用户信息
     * @param userInfoItems 对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult insertUserInfo(Map<String, Object> params);

    /**
     * 删除用户信息
     * @param userInfoItems 对应实体类的json格式字符串
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult deleteUserInfo(Map<String, Object> params);

    /**
     * 修改用户密码
     * @param upType 修改类型（"resetpwd":重置密码，无需提供原密码；"changepwd":修改密码，需要提供原密码）
     * @param userId 用户编号
     * @param newPwd 新用户密码
     * @param oldPwd 原用户密码，修改密码时需要提供，重置密码时可不提供
     * @return AjaxResult
     * @author DH-Xxj
     */
	AjaxResult updateUserPassWord(Map<String, Object> params);

    /**
     * 修改用户信息
     * @param userInfoItems 对应实体类的json格式字符串
     * @param upType 修改类型（修改用户信息：upuser，修改用户基础信息：upuserbaseinfo，修改用户皮肤：upskin，修改档案照片：upuserphoto，修改用户头像：upuserpicture）
     * @return AjaxResult
     * @author DH-Xxj
     */
    AjaxResult updateUserInfo(Map<String, Object> params);

}
